package service.impl;

import Dao.UserDao;
import Dao.impl.UserDaoImpl;
import pojo.User;
import service.UserService;

import java.util.List;

public class UserServiceImpl implements UserService {
    UserDao userDao = new UserDaoImpl();
    @Override
    public boolean register(User user) {

        return userDao.insert(user);
    }

    @Override
    public User login(User user) {
        // 根据用户名和密码查找用户
        User foundUser = userDao.findUserByUsernameAndPassword(user.getUsername(), user.getPassword());
        return foundUser;
    }
    @Override
    public boolean updateUser(User user) {
        if(user.getPassword().isEmpty()) {
            return userDao.updateUserNotPassword(user);
        }
        else {
            return userDao.updateUser(user);
        }
    }
    @Override
    public User getUserById(int userId) {
        return userDao.getUserById(userId);
    }
    @Override
    public boolean changePassword(String username, String currentPassword, String newPassword) {
        // 通过用户名查找用户
        User user = userDao. findUserByUsernameAndPassword(username, currentPassword);
        if (user != null && user.getPassword().equals(currentPassword)) {
            // 如果当前密码正确，则更新为新密码
            user.setPassword(newPassword);
            return userDao.updatePassword(user);
        }
        return false; // 原密码错误或者用户不存在
    }

    @Override
    public boolean removeById(int userId) {
        //通过用户Id删除用户
       User user = userDao.getUserById(userId);
     if(user != null && user.getUserId()== userId){
         return userDao.removeById(userId);
     }else{
         return false;
     }
    }

    @Override
    public List<User> selectUserListByNameAndStatus(String nickName, String status) {
        if (nickName.isEmpty()) {
            // 如果名字为空就只根据状态查
            if (status.isEmpty()) {
                // 状态也为空就相当于没有查询条件，则全查
                return userDao.selectUserList();
            }else {
                // 否则根据状态来查询用户列表
                return userDao.selectUserListByStatus(status);
            }
        }else {
            // 否则名字不为空，那就要看看状态
            if (status.isEmpty()) {
                // 状态为空，那就只根据名字查（模糊查询）
                return userDao.selectUserListByName(nickName);
            }else {
                // 状态和名字都不为空，根据名字和状态一起查
                return userDao.selectUserListByNameAndStatus(nickName, status);
            }
        }
    }

    @Override
    public List<User> selectUserList(Integer startIndex, Integer targetTotal) {
        return userDao.selectUserList(startIndex, targetTotal);
    }

    @Override
    public Integer getTotalUserCount() {
        List<User> users = userDao.selectUserList();
        return users.size();
    }

}
